#!/bin/bash

:<<!
语法格式：
printf format-string [arguments...]
format-string 为格式控制字符串
arguments 为参数列表
!

echo "Hello! Shell"
printf "Hello! Shell\n"

:<<!
%s %c %d %f 都是格式替换符，
%s 输出一个字符串
%d 整型输出
%c 输出一个字符
%f 输出实数，以小数形式输出
%-10s 指一个长度为10个字符（-表示左对齐，没有则表示右对齐）
任何字符都会被显示在10个字符长度的字符内，如果不足则自动以空格填充，超过也会将内容全部显示出来
%-4.2f指格式化为小数，其中.2指保留2为小数
!

printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg
printf "%-10s %-8s %-4.2f\n" 郭晶 女 66.1234
printf "%-10s %-8s %-4.2f\n" 临涣 男 70

# format-string为双引号
printf "%d %s\n" 1 "abc"

# format-string为单引号
printf '%d %s\n' 1 "abc"

# 不加引号
printf  %s abcdf
printf "\n"

# format-string被重用
printf "%s\n" abc def

# 如果没有argument, %s 默认为空 %d 默认为0

printf "%s and %d\n"

:<<!
printf的转义序列
\a 警告字符，通常为ASCII的BEL字符
\b 后退
\c 抑制（不显示）输出结果中任何结尾的换行字符（只在%b格式指示符控制下的参数字符串中有效），而且，任何字符都会被显示在10个字符长度的字符内留在
参数里的字符、任何接下来的参数一级任何留在格式字符串中的字符，都被忽略
\f 换页（formfeed）
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符
\\ 一个字面上的反斜杠字符
\ddd 表示1到3位数八进制值的字符。仅在格式字符串中有效
\0ddd 表示1到3位的八进制值字符
!

printf "a string, no processing:<%s>\n" "A\nB"

printf "a string, no processing:<%b>\n" "A\nB"

printf "www.baidu.com \a"
